fix(tree): Buffer events during multi-op table edits #25346
Draft
+396
−120
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add package-internal functionality to allow pausing and buffering TreeNode events. This can be used to avoid user event spam in controlled scenarios where we know it is safe to do so. This functionality is not exposed to the user, as the behavior could be dangerous when not considered very carefully.
Updates Table schema operations to pause events during operations that are composed of multiple tree-level edits. This (when combined with transactions) gives the appearance of atomicity for these operations, which is the desired user-facing behavior.
Also mitigates an existing bug that caused 2 tree change events to be emitted when moving a child within or between unhydrated array node(s).
AB#47668